package cn.iocoder.yudao.position.entity;

import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import cn.iocoder.yudao.module.system.dal.dataobject.tenant.TenantDO;
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;

import java.math.BigDecimal;
import java.time.LocalDate;

/**
 * 职位-信息 DO
 *
 * @author 超级管理员
 */
@TableName("position")
@KeySequence("position_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class PositionDO extends BaseDO {

    /**
     * 职位ID
     */
    @TableId
    private Long id;
    /**
     * 公司ID
     */
    private Long tenantId;
    /**
     * 职位名称
     */
    private String title;
    /**
     * 职位id
     */
    private Integer positionCategoryId;

    /**
     * 职位名称
     */
    private String positionCategoryName;

    /**
     * 职位编码
     */
    private String jobCode;
    /**
     * 学历要求(education_requirement字典值)
     */
    private Long educationDictCode;
    /**
     * 学历要求名称
     */
    private String educationDictLabel;
    /**
     * 薪资待遇(salary_range字典值)
     */
    private Long salaryDictCode;
    /**
     * 薪资待遇名称
     */
    private String salaryDictLabel;
    /**
     * 性别要求(gender_requirement字典值)
     */
    private Long genderDictCode;
    /**
     * 性别要求名称
     */
    private String genderDictLabel;
    /**
     * 工作经验(work_experience字典值)
     */
    private Long experienceDictCode;
    /**
     * 工作经验名称
     */
    private String experienceDictLabel;
    /**
     * 公司性质(company_type字典值)
     */
    private Long companyTypeDictCode;
    /**
     * 公司性质名称
     */
    private String companyTypeDictLabel;
    /**
     * 公司规模(company_size字典值)
     */
    private Long companySizeDictCode;
    /**
     * 公司规模名称
     */
    private String companySizeDictLabel;
    /**
     * 福利待遇(benefits字典值、多个逗号拼接)
     */
    private String benefitsDictCode;
    /**
     * 福利待遇名称
     */
    private String benefitsDictLabel;
    /**
     * 年龄要求(age_requirement字典值)
     */
    private Long ageDictCode;
    /**
     * 年龄要求名称
     */
    private String ageDictLabel;
    /**
     * 到岗时间(onboard_time字典值)
     */
    private Long onboardDictCode;
    /**
     * 到岗时间名称
     */
    private String onboardDictLabel;
    /**
     * 婚况要求(marital_status字典值)
     */
    private Long maritalDictCode;
    /**
     * 婚况要求名称
     */
    private String maritalDictLabel;
    /**
     * 语言要求(language_requirement字典值)
     */
    private Long languageDictCode;
    /**
     * 语言要求名称
     */
    private String languageDictLabel;
    /**
     * 是否应届生(fresh_graduate字典值)
     */
    private Long freshGraduateDictCode;
    /**
     * 是否应届生名称
     */
    private String freshGraduateDictLabel;
    /**
     * 招聘人数
     */
    private Integer recruitNumber;
    /**
     * 有效期至(拓展)
     */
    private LocalDate validDate;
    /**
     * 是否最新(0否 1是)
     */
    private String isLatest;
    /**
     * 是否急聘(0否 1是)
     */
    private String isUrgent;
    /**
     * 是否推荐(0否 1是)(拓展)
     */
    private String isRecommend;
    /**
     * 是否热门(0否 1是)(拓展)
     */
    private String isHot;
    /**
     * 浏览量
     */
    private Integer viewCount;
    /**
     * 沟通数
     */
    private Integer communicationCount;
    /**
     * 沟通率(拓展)
     */
    private BigDecimal communicationRate;
    /**
     * 投递量
     */
    private Integer deliveryCount;
    /**
     * 收藏数(拓展)
     */
    private Integer favoriteCount;
    /**
     * 职位职责
     */
    private String jobDescription;
    /**
     * 任职要求
     */
    private String jobRequirement;
    /**
     * 职位关键词(拓展)
     */
    private String jobKeywords;
    /**
     * 联系人(拓展)
     */
    private String contactName;
    /**
     * 联系人职位(拓展)
     */
    private String contactPosition;
    /**
     * 联系电话(拓展)
     */
    private String contactPhone;
    /**
     * 联系邮箱(拓展)
     */
    private String contactEmail;
    /**
     * 工作省份编码
     */
    private String workProvinceCode;
    /**
     * 工作省份名称
     */
    private String workProvinceName;
    /**
     * 工作城市编码
     */
    private String workCityCode;
    /**
     * 工作城市名称
     */
    private String workCityName;
    /**
     * 工作区县编码
     */
    private String workDistrictCode;
    /**
     * 工作区县名称
     */
    private String workDistrictName;
    /**
     * 工作详细地址
     */
    private String workAddress;
    /**
     * 经度
     */
    private BigDecimal longitude;
    /**
     * 纬度
     */
    private BigDecimal latitude;
    /**
     * 状态（0正常 1停用）
     */
    private String status;
    /**
     * 备注
     */
    private String remark;

    @TableField(exist = false)
    private TenantDO tenantDO;

    @TableField(exist = false)
    private AdminUserDO adminUserDO;
}